/* PROBLEME N° 4
 * Trouver le plus grand nombre palindrome qui peut être formé
 * par le multiplication de 2 nombres à 3 chiffres
 * 
 * Date : 17 Jan. 2010 13:17
 * Résultat : 906609 (913 * 996)
 * Temps d'exécution : 0m0.003s
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int inverse(int);
int palindrome(int);

int main(int argc, char * argv[])
{
    int maxPalindrome = 0;
    int i = 999, j = 0;

    while(i >= 100)
    {
        j = 999;
        while(j >= i)
        {
            if(i*j <= maxPalindrome)
                break;

            if(palindrome(i*j))
                maxPalindrome = i * j;
            j--;
        }
        i--;
    }

    printf("%d\n", maxPalindrome);
    return 0;
}

// Renvoie le nombre n lu dans l'autre sens
int inverse(int n)
{
    int inverse = 0;
    while(n > 0)
    {
        inverse = (10 * inverse) + (n % 10);
        n /= 10;
    }
    return inverse;
}

// Verifie si n est un palindrome
int palindrome(int n)
{
    return (n == inverse(n));
}
